From: Keir Fraser Date: Tue, 11 Nov 2008 11:13:57 +0000 (+0000) Subject: x86: fix getvcpucontext for HVM segment registers X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~14043^2~42 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=12c17be8e9fc89982b8634e8ac65576e45fee24e;p=xen.git x86: fix getvcpucontext for HVM segment registers Signed-off-by: Kouya Shimura Signed-off-by: Akio Takebe Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/domctl.c b/xen/arch/x86/domctl.c index a145583137..7531cfddff 100644 --- a/xen/arch/x86/domctl.c +++ b/xen/arch/x86/domctl.c @@ -1074,11 +1074,24 @@ void arch_get_info_guest(struct vcpu *v, vcpu_guest_context_u c) if ( is_hvm_vcpu(v) ) { + struct segment_register sreg; memset(c.nat->ctrlreg, 0, sizeof(c.nat->ctrlreg)); c.nat->ctrlreg[0] = v->arch.hvm_vcpu.guest_cr[0]; c.nat->ctrlreg[2] = v->arch.hvm_vcpu.guest_cr[2]; c.nat->ctrlreg[3] = v->arch.hvm_vcpu.guest_cr[3]; c.nat->ctrlreg[4] = v->arch.hvm_vcpu.guest_cr[4]; + hvm_get_segment_register(v, x86_seg_cs, &sreg); + c.nat->user_regs.cs = sreg.sel; + hvm_get_segment_register(v, x86_seg_ss, &sreg); + c.nat->user_regs.ss = sreg.sel; + hvm_get_segment_register(v, x86_seg_ds, &sreg); + c.nat->user_regs.ds = sreg.sel; + hvm_get_segment_register(v, x86_seg_es, &sreg); + c.nat->user_regs.es = sreg.sel; + hvm_get_segment_register(v, x86_seg_fs, &sreg); + c.nat->user_regs.fs = sreg.sel; + hvm_get_segment_register(v, x86_seg_gs, &sreg); + c.nat->user_regs.gs = sreg.sel; } else {